import axios from 'axios';

// 创建axios实例
const api = axios.create({
  baseURL: 'http://api.blog.gamfun.com', 
  //baseURL: 'http://192.168.2.188:8888',
  timeout: 30000, // 增加超时时间
  headers: {
    'Content-Type': 'application/json',
  },
  // 不再需要withCredentials，因为请求会通过代理发送
  // withCredentials: true,
});

// 请求拦截器 - 添加平台和版本信息
api.interceptors.request.use(
  (config) => {
    config.headers.platform = config.headers.platform || '';
    config.headers.version = config.headers.version || '';
    
    // 如果存在token，添加到请求头中
    const token = localStorage.getItem('token');
    
    if (token) {
      config.headers.Authorization = `${token}`;
    }
    
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 响应拦截器 - 处理错误
api.interceptors.response.use(
  (response) => {
    return response.data;
  },
  (error) => {
    // 可以在这里处理全局错误
    console.error('API请求错误:', error);
    
    // 详细记录错误信息
    if (error.response) {
      // 服务器返回了错误状态码
      console.log('错误状态码:', error.response.status);
      console.log('错误数据:', error.response.data);
      console.log('错误头信息:', error.response.headers);
    } else if (error.request) {
      // 请求发送成功，但没有收到响应
      console.log('未收到响应，请确认后端服务是否运行:', error.request);
    } else {
      // 请求设置触发的错误
      console.log('请求设置错误:', error.message);
    }
    
    return Promise.reject(error);
  }
);

// 用户认证相关API
export const authAPI = {
  // 用户注册
  register: (userData) => {
   
    return api.post('/auth/api-user-account-register', userData);
  },

  // 用户登录
  login: (credentials) => {
    // 保持一致的命名规则，使用/api-前缀

    return api.post('/auth/api-user-account-get', credentials);
  }
};

// 用户信息相关API
export const userAPI = {
  // 保存用户信息
  saveUserInfo: (userInfo) => {
    return api.post('/user/api-user-info-save', userInfo);
  },
  
  // 获取用户信息
  getUserInfo: (userInfoId) => {
    console.log('获取用户信息，参数:', userInfoId);
    // 只使用userid参数进行查询
    return api.post('/user/api-user-info-get',userInfoId);
  },
  
  // 搜索用户
  searchUsers: (searchParams = {}) => {
    return api.post('/user/api-user-info-search', searchParams);
  }
};

// 文章相关API
export const workAPI = {
  // 搜索文章信息
  searchWorks: (searchParams = {}) => {
    return api.post('/work/api-work-info-search', searchParams);
  },
  
  // 获取文章详情
  getWorkDetail: (workId) => {
    return api.post('/work/api-work-info-get', workId );
  },
  
  // 获取用户的所有作品
  getUserWorks: (userId) => {
    console.log("dididididi",userId);
    return api.post('/work/api-work-info-user', userId);
  },
  
  // 保存/发布文章
  saveWork: (workData) => {
    return api.post('/work/api-work-info-save', workData);
  },
  
  // 删除文章
  deleteWork: (workId) => {
    return api.post('/work/api-work-info-delete', workId);
  }
};

// 角色管理相关API
export const roleAPI = {
  
  // 保存用户角色
  saveUserRole: (roleData) => {
    
    return api.post('/api/admin-sys-role-save', roleData);
  },
  
  // 获取用户角色
  getUserRole: (roleQuery) => {
    return api.post('/api/admin-sys-role-get', roleQuery);
  }
};

// 会员管理相关API
export const memberAPI = {
  
  // 申请成为会员
  applyForMembership: (memberData) => {
    return api.post('/api/api-member-apply-save', memberData);
  },
  
  // 获取会员申请状态
  getMemberApplyStatus: (memberQuery) => {
    return api.post('/api/admin-member-apply-get', memberQuery);
  },

  // 获取所有会员申请列表（管理员）
  getMemberApplications: (page = 1, pageSize = 10) => {
    return api.post('/api/admin-member-apply-list', {
      page: page,
      pageSize: pageSize
    });
  },

  // 批准会员申请（管理员）
  approveApplication: (applicationId) => {
    return api.post('/api/admin-member-apply-approve', {
      id: applicationId,
      memberFlag: 1 // 1表示批准
    });
  },

  // 拒绝会员申请（管理员）
  rejectApplication: (applicationId) => {
    return api.post('/api/admin-member-apply-reject', {
      id: applicationId,
      memberFlag: 2 // 2表示拒绝
    });
  }
};

// 文件上传相关API
export const uploadAPI = {
  // 文件上传
  uploadFile: (file, bucketName = 'Public', dir = 'image') => {
    const formData = new FormData();
    formData.append('file', file);
    
    // 创建专门的上传配置，删除默认的Content-Type让浏览器自动设置
    const uploadConfig = {
      headers: {
        'Content-Type': undefined, // 让浏览器自动设置正确的Content-Type
      },
      params: {
        bucketName,
        dir
      }
    };
    
    return api.post('/api/api-file-uploader-test', formData, uploadConfig);
  }
};

export default api;
